package com.github.mustachejavabenchmarks; import com.github.mustachejava.DefaultMustacheFactory; import com.github.mustachejava.JavascriptObjectHandler; import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; import javax.script.ScriptException; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; public class JavascriptInterpreterTest extends JsonInterpreterTest { @Override protected Object getScope() throws IOException { ScriptEngineManager sem = new ScriptEngineManager(); ScriptEngine se = sem.getEngineByName("nashorn"); InputStream json = getClass().getClassLoader().getResourceAsStream("hogan.json"); ByteArrayOutputStream baos = new ByteArrayOutputStream(); byte[] bytes = new byte[1024]; int read; while ((read = json.read(bytes)) != -1) { baos.write(bytes, 0, read); } try { return se.eval("var tweet = " + new String(baos.toByteArray()) + "; " + "var tweets = []; for (var i = 0; i < 50; i++) { tweets.push(tweet); };" + "this;"); } catch (ScriptException e) { throw new RuntimeException(e); } } @Override protected DefaultMustacheFactory createMustacheFactory() { DefaultMustacheFactory mustacheFactory = new DefaultMustacheFactory(root); mustacheFactory.setObjectHandler(new JavascriptObjectHandler()); return mustacheFactory; } }